#pragma once
#include "ch32v30x.h"
#define HMC_PORT GPIOA
#define PS1A GPIO_Pin_4
#define PS1B GPIO_Pin_5
#define PS2A GPIO_Pin_6
#define PS2B GPIO_Pin_7

// #define PS1A GPIO_Pin_3
// #define PS1B GPIO_Pin_4
// #define PS2A GPIO_Pin_5
// #define PS2B GPIO_Pin_6

#define PSASelBNC()        \
    HMC_PORT->BCR = PS1B;  \
    asm ("nop");           \
    asm ("nop");           \
    asm ("nop");           \
    asm ("nop");           \
    asm ("nop");           \
    HMC_PORT->BSHR = PS1A; \
    asm ("nop");           \
    asm ("nop");           \
    asm ("nop");           \
    asm ("nop");           \
    asm ("nop")
#define PSASelSMA()        \
    HMC_PORT->BCR = PS1A;  \
    asm ("nop");           \
    asm ("nop");           \
    asm ("nop");           \
    asm ("nop");           \
    asm ("nop");           \
    HMC_PORT->BSHR = PS1B; \
    asm ("nop");           \
    asm ("nop");           \
    asm ("nop");           \
    asm ("nop");           \
    asm ("nop")
#define PSBSelBNC()        \
    HMC_PORT->BCR = PS2A;  \
    asm ("nop");           \
    asm ("nop");           \
    asm ("nop");           \
    asm ("nop");           \
    asm ("nop");           \
    HMC_PORT->BSHR = PS2B; \
    asm ("nop");           \
    asm ("nop");           \
    asm ("nop");           \
    asm ("nop");           \
    asm ("nop")
#define PSBSelSMA()        \
    HMC_PORT->BCR = PS2B;  \
    asm ("nop");           \
    asm ("nop");           \
    asm ("nop");           \
    asm ("nop");           \
    asm ("nop");           \
    HMC_PORT->BSHR = PS2A; \
    asm ("nop");           \
    asm ("nop");           \
    asm ("nop");           \
    asm ("nop");           \
    asm ("nop")

void HMC544Init (void);
